\subsubsection{Determinisation}

As one \algo\ was required we had to decide which one we wanted to implement. 
Basically we had to choose between the two principal ones that are the determinisation and the minimisation.
We finally decided on the determinisation because it was in our opinion the most interesting for that \ani\ and for the manipulation of the states.
We figured out that if we succeeded with its implementation adding others could be done, without many risks for our data structure to be inappropriate.

\subsubsection{Data structure additions}

\paragraph*{DeterminisedState}

\indent\ \mk\\
\indent\ In order to implement the determinisation we had to add some information on the states.\mk\\

\begin{figure}[h]
\centering
\includegraphics[scale=0.45]{img/deter}
\caption{The DeterminisedState class}
\label{fig:determinisedState}
\end{figure}

Therefore as you can see on the figure \ref{fig:determinisedState}, we created a new class \tech{DeterminisedState} extending State to add the needed pieces of information.\mk

This needed addition was to keep the original's \auto\ state they are composed of. The determinisation creating new states by regrouping several others.\mk

Once again we use a set and more precisely a \tech{HashSet} to store this needed link.\bk\\
   
\paragraph*{StateLabelTargets}

\indent\ \mk\\
\indent\ To help implement the determinisation we also created another data structure.\mk\\

\begin{figure}[h]
\centering
\includegraphics[scale=0.45]{img/slt}
\caption{The StateLabelTarget class}
\label{fig:slt}
\end{figure}

Now, in the \algo\ once a state is created, to calculate the transition starting from it you have to browse all the ones starting from the originals \sts\ it is composed of. \mk

Hence we created a function to obtain these pieces of information. A \tech{StateLabelTarget} object is linked to a \tech{DeterminisedState} and it contains all the original \sts\ attainable with a given label.\mk

As you can see on figure \ref{fig:slt}, it is composed of a label and the set of \autos\ reachable with this label.\mk

The function we created takes a \tech{DeterminisedState} as a parameter and returns a list of all the original states reachable from it with the associated labels. \bk

\subsection{\Algo implementation}

The first step for the determinisation of an \algo\ is to create the initial \st\ of the resulting \auto\, which is formed by the union of all the original' s initials \sts.

Then for each created \st\ we have to collect all the reachable states by using the function described bellow.
Then for each label we check if the \st\ formed by the union of the obtained \sts\ already exists in the \auto\ and if not we create it and add it. If it exists we simply add the new transition. \mk\\

Each time we have finished treating a \st\ we add the \auto\ we have at the moment to the \ani.\bk

